/*
  a 到 b 的质数
  题目描述
    输入 a 和 b，从小到大输出 a 到 b 之间所有的质数。
  输入格式
    第一行，两个整数 a, b。
  输出格式
    从小到大输出 a 到 b 之间所有的质数。每行输出一个数。
  输入数据 1
    2 10
  输出数据 1
    2
    3
    5
    7
*/

#include <bits/stdc++.h>

using namespace std;

int main() {
    int a, b;
    int s[5000008] = {1, 1};  // a[i] 表示整数 i 表示是否是质数: 0 表示是质数，1 表示非质数(合数)

    cin >> a >> b;

    /*
      思路:
        1). 使用埃氏筛除法，将 1 ~ b 之间的非质数筛除掉!
        2). 然后再从筛除结果中找出 a 和 b 之间的质数
    */

    /* 埃氏筛除法核心代码 */
    for (int i = 2; i <= sqrt(b); i++) { // 注意: 对于质数 i，从 i*i 开始筛! 因此如果 b 小于 i*i, 则循环退出!
        // 当 i 是质数的时候，执行筛除操作
        if (s[i] == 0){
            for (int j = i * i; j <= b; j += i) { // 从 i*i 开始筛，筛掉质数 i 的倍数
                s[j] = 1;  // 筛除 j (即标记 s[j] 为非质数)
            }
        }
    }

    // 根据筛除操作后的结果，输出 a 到 b 之间剩余质数
    for (int i = 1; i <= b; i++) {
        if (s[i] == 0 && i >= a) {
            cout << i << endl;
        }
    }

    return 0;
}